弊社メンバーズプレミアムサービス契約者を対象にWafCharmが無償で利用可能になりました!※
エントリープランの無償提供は2023年5月31日をもって新規受付を終了しました。
AWS事業本部コンサルティング部の後藤です。
本日8月4日より弊社メンバーズのプレミアムサービスをご利用頂く事でWafCharmのエントリープランが無償で利用可能になりました!そこで、本記事ではWafCharmを利用するまでの手順をご紹介させて頂きます。
AWS WAFの導入・運用をAIを使って効率化する「WafCharm」のエントリープランをクラスメソッドメンバーズ プレミアムサービス契約者に無償提供開始
WafCharmとは
WafCharmは世界中のWebに対する攻撃パターンをAIによって学習し、環境に応じたアクセスのパターン等を判別、AWS WAFのルールを最適化してくれるサービスとなります。これらの事から、WafCharmを利用する事でAWS WAFのルール設定や運用の工数削減が見込めます。
また、本記事ではAWS WAF v2 (以下、AWS WAF)での利用を想定しております。AWS WAF Classicで利用する際には本記事通りの設定ではない可能性がありますのでご注意ください。 WafCharm利用におけるAWS WAF ClassicとAWS WAFの変更点については以下をご参考頂けますようお願いいたします。
WafCharm が new AWS WAF に対応しました
既にAWS WAFをご利用頂いており、AWS WAFの既存ルールからWafCharmのルールに移行される方向けに、手順や留意事項をまとめた内容を別記事にて紹介させて頂きます。
それでは、やっていきましょう!
前提条件
本作業を実施するには以下を準備頂く必要があります。
- WafCharmアカウント
- AWSアカウント
- ALB、CloudFront等AWS WAFのWeb ACLを紐づけるリソースが作成済み
- AWS WAFの作成、設定変更が可能な権限
- IAMユーザの作成が可能な権限
構成図
本記事で構築する環境は以下のようなものになります。 ※CloudFrontとALBは本記事では取り扱いません。
目次
本記事の作業項目と作業目安となります。
Step1. AWS WAF設定 (作業時間目安 : 5分) Step2. IAMユーザ作成 (作業時間目安 : 5分) Step3. WafCharm設定 (作業時間目安 : 10分) Step4. WAFルールを遮断に切り替え (作業時間 : 5分)
Step1. AWS WAF設定
WafCharmの設定を行う前にAWS WAFでWeb ACLを作成します。
Step1-1. AWS WAFのコンソール画面から「Create Web ACL」を実行
AWSコンソールより「WAF & Shiled」を開き、左項目より「Web ACLs」を選択、表示された画面の右にある「Create Web ACL」を実行してください。
Create Web ACLを実行頂くとWeb ACL作成画面に遷移するため、画面に従って設定項目を埋めていきます。
Step.1-2 Web ACL作成
Web ACL作成画面に従ってWeb ACLを作成していきます。
「Describe web ACL and associate it to AWS resources」の画面では下記項目設定します。
- Name
- Web ACLsの名前に該当します。
- 最大128文字、英数字とハイフン(-)、アンダースコア(_)が利用出来ます。
- CloudWatch metric Name
- CloudWatchに出力されるメトリクス名に該当します。
- 最大128文字、英数字とハイフン(-)、アンダースコア(_)が利用出来ます。
- Resource type
- Web ACLを紐づけるAWSリソースタイプを選択します。
- ※AWS WAFではAWS Appsyncがサポートされていますが、WafCharmではAppsyncはサポートされておりません。
- Region
- Web ACLを作成するリージョンを選択します。
- Resource typeがCloudFrontの場合、Globalとなります。
- Associated AWS Resources
- Web ACLを紐づけるリソースを選択します。
- 後からでも設定可能なので、初回作成時は設定していなくても問題ありません。
上記設定後、「Next」で次の設定項目に移ります。
「Add rules and rule groups」、「Set rule priority」、「Configure metrics」はデフォルト設定で問題ありませんの、Nextで次の項目に移ってください。
「Review and create web ACL」の画面で自信が設定した項目の確認ができます。問題無ければ画面下の「Create web ACL」を実行頂く事で web ACL の作成が完了となります。
Step.1-3 Web ACL IDの確認
web ACLs一覧に作成したweb ACLが表示されていれば作成完了です。web ALCs一覧にはweb ACLのIDが表示されています。このIDはWafCharm設定時に必要となるためメモしておきます。
また、web ACL名をクリック頂く事で詳細な情報を確認頂けます。Step.1-2で「Associated AWS Resource」にAWSリソースを紐づけている場合は対象のリソースに間違いが無いかご確認頂ければと思います。
Step2. IAMユーザ作成
WafCharmがAWSにアクセスするための認証情報を発行するため、WafCharm用のIAMユーザを作成します。
Step2-1. IAMのコンソール画面から「ユーザーを追加」を実行
AWSコンソールより「IAM」を開き、左項目の「ユーザ」を選択、右上の「ユーザーを追加」を実行してください。
Step2-2. IAMユーザ詳細の設定
IAMユーザ作成画面に遷移したら下記項目を設定します。
- ユーザ名
- IAMユーザ名に該当します。
- 任意のユーザ名で問題ありませんが、WafCharmで使用するIAMユーザだと把握出来ると良いです。
- AWS認証情報タイプの選択
- 「アクセスキー プログラムによるアクセス」のみを選択します。
上記項目設定後、「次のステップ」を選択して次の設定項目に移ります。
Step2-3. アクセス権限設定
WafCharmで必要とする権限をIAMユーザに設定します。「既存ポリシーを直接アタッチ」を選択して以下のAWS管理ポリシーを付与してください。
- AmazonS3ReadOnlyAccess
- AWSWAFFullAccess
上記項目設定後、「次のステップ」を選択して次の設定項目に移ります。
Step2-4. タグ名設定
WafCharmの設定でIAMユーザのタグに指定はありませんので、設定は不要です。
Step2-5. ユーザ作成実行
作成するIAMユーザの設定に問題が無ければ「ユーザの作成」を実行頂く事でIAMユーザが作成されます。
Step2-6. 認証情報の取得
IAMユーザの作成が完了すると、認証情報であるアクセスキーとシークレットアクセスキーが表示されます。シークレットアクセスキーがここでしか確認できないため忘れずに「.csvダウンロード」を行ってください。
以上でIAMユーザ作成は完了となります。
Step3. WafCharm設定
ここからWafCharm側の設定を行います。WafCharmの設定を行うにはWafCharmにログインが必要となりますので、弊社より通知されたWafCharmアカウント情報をご確認ください。
Step3-1. WafCharmにログイン
WafCharmにアクセスしてログインします。
ログインには弊社より通知されたWafCharmアカウント情報を使用して頂ければと思います。
Step3-2. Web ACL Config作成
WafCharmログイン後、画面左上の「AWS」から「Web ACL Config」を選択、「+Add」を実行してWeb ACL Configを新規作成します。
Web ACL Configの各項目の説明についてはWafCharm様の記事にも詳しく記載がありますので参考にしてみてください。
- Web ACL Config Name
- WafCharmのWeb ACL Config名に該当します。
- AWS WAFのWeb ACLと必ずしも一致させる必要はありません。
- Config作成後、設定変更可能です。
- Web ACL ID
- WafCharmで管理するAWS WAFのWeb ACL IDを入力します。
- Config作成後、設定変更出来ません。
- Web ACL Version
- AWS WAF(v2)を選択します。
- Config作成後、設定変更出来ません。
- Choose AWS Service Type
- Web ACLを紐づけるAWSリソースタイプを選択します。
- Config作成後、設定変更出来ません。
- Choose your AWS Region
- Web ACL及び、リソースを作成しているリージョンを選択します。
- Web ACL Access Key
- 上記で作成したIAMユーザのアクセスキーを入力します。
- Web ACL Secret Key
- 上記で作成したIAMユーザのシークレットキーを入力します。
- Default WAF Action
- WafCharmが対象Web ACLにルールを適用する際のアクションを設定します。
- 初回は誤検知を防ぐため Count を推奨します。
- Whitelist
- ホワイトリストに追加するIPアドレスを追加します。
- 後から追加設定可能です。
- Blacklist
- ブラックリストに追加するIPアドレスを追加します。
- 後から追加設定可能です。
- Originating address
- Source IP address と IP address in header から選択します。
- Source IP address : ALBやCDN等、単体で利用している場合はこちらを選択してください。
- IP address in header : ALBの前段にCDNが存在する環境等、X-Forwarded-For等のHTTPヘッダフィールドでIP制御が必要な場合はこちらを選択してください。
- IP address in header 使用に関して幾つか注意点がありますので、こちらをご確認ください。
上記項目設定後、「Save」を実行して頂く事でWeb ACL Configの設定は完了です。
Step3-3. Web Site Config作成
Web ACL Configの設定が完了すると、次にWeb Site Configの設定ページに遷移します。
- Web ACL Config
- 対象のWeb ACL Configを選択します。
- FQDN
- 対象のアプリケーションのFDQNを入力します。
- 複数FQDNが存在する場合、代表で一つのFQDNを設定してください。
- AWS WAFはリソース単位で稼働するため、登録するFQDNによるWAFへの影響はありません。
- S3 Path
- リソースのアクセスログ出力パスを入力します。
- CloudFront例 : s3://Wafcharm.s3.amazonaws.com/cloudfrontlogs/
- ALB例 : s3://WafCharm/alblogs/AWSLogs//elasticloadbalancing/ap-northeast-1/
- Access Key Option
- 上記IAMユーザでAmazonS3ReadOnlyAccessの権限を与えている場合はチェックを付けてください。
上記項目設定後、「Save」を実行頂く事でWeb Site Configの設定も完了となります。
Step3-4. WafCharm設定確認
WafCharmの設定が完了しますと、WafCharmのWeb ACL Configで紐づけたweb ACLに以下ルールグループが追加されています。
※ルールグループは平日日中帯に自動的に追加されます。
- WafCharm_Common_Basic_Group
- WafCharm_Common_Advanced_Group
- WafCharm_Blacklist_Group
Step4. WAFルールを遮断に切り替え
WafCharmのWeb ACL ConfigでDefault WAF ActionをCountにしている場合、AWS WAFはルールに基づいて通信を監視して検知のみを行います。実際にAWS WAFに働いてもらうには悪意ある通信を遮断する必要がありますが、稀にWafCharmで設定したルールがアプリケーションの正規の通信を遮断してアクセス出来なくなる誤検知の現象が発生する事があります。
WafCharmは誤検知が発生しにくい設計にはなっているようですが、万が一誤検知が発生した場合、WafCharmにお問い合わせ頂く事でシグネチャのカスタマイズを実施頂けるようですが、エントリープランの場合は別途費用が発生するそうです。
WafCharmのルールで誤検知が無く、遮断に切り替えても問題が無い事を確認出来たら検知から遮断に切り替えます。
Step4-1. Default WAF Actionの変更
WafCharmにログイン頂き、対象のWeb ACL Configを選択、上部項目の「Edit」を実行します。
Web ACL Configの設定画面に遷移したら「Default WAF Action」を Count から Block に変更します。
Step4-2. web ACLのルールアクション変更
次にAWS WAFのweb ACLに付与されたルールグループのアクション設定を変更します。対象のweb ACLを選択頂き、上部項目の「Rules」を選択、WafCharmによって設定された何れかのルールを選択した状態で「Edit」を実行します。
各ルールのCountが有効になっている場合、Set all rule actions to count を無効化にしてSave ruleで設定を保存します。
ルールの優先度変更を問われますが、こちらは変更せず save を実行してください。
WafCharmで設定された全てのルールに対して上記設定を適用する事で、悪意ある通信を遮断してくれるようになります。
最後に
以上でWafCharmの設定は完了となります。
WafCharmにはAWS WAFのルール運用以外にも検知、遮断時にメールで通知する機能や、月初にレポートを出力する機能があります。メール通知やレポート機能の設定方法は別記事にてまとめさせて頂いておりますので、設定の際にはご参考頂ければ幸いです。
まとめ
本記事ではWafCharmの基本設定と通知から遮断に切り替える手順をまとめてみました。一度設定を行う事でWafCharmがAWS WAFのルールをいい感じに運用してくれますので、運用の負担が軽減されるかと思います。是非この機会に弊社のメンバーズアカウントとWafCharmをご利用してみてください。
参考記事
・WafCharm が new AWS WAF に対応しました ・WafCharmご利用手順 ・AWS WAF での XFF ヘッダーオプションに WafCharm が対応しました